package com.zz.ecommerce.pojo;

import com.zz.bundles.cache.dict.DictTag;
import com.zz.ecommerce.utils.SqlType;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 订单(放行)表头
 */
public class CbecOrder implements Serializable {
    private static final long serialVersionUID = 48901688591328349L;

    /**
     * 唯一主键
     */
    private String id;

    /**
     * 订单类型（I=进口，E=出口）。电商平台的订单类型 I-进口商品订单；E-出口商品订单
     */
    private String orderType;

    /**
     * 订单编号。原始交易平台的原始订单编号
     */
    private String orderNo;

    /**
     * 电商平台代码。电商平台的海关备案编码（18位）
     */
    private String ebpCode;

    /**
     * 电商平台名称。电商平台的海关备案名称（电子口岸校验名称）
     */
    private String ebpName;

    /**
     * 电商企业代码。电商企业的海关备案编码(18位)
     */
    private String ebcCode;

    /**
     * 电商企业名称。电商企业的海关备案名称
     */
    private String ebcName;

    /**
     * 货款金额
     */
    private BigDecimal goodsValue;

    /**
     * 运杂费(无则为0)
     */
    private BigDecimal freight;

    /**
     * 优惠减免金额(无则为0)
     */
    private BigDecimal discount;

    /**
     * 订单商品税款
     */
    private BigDecimal taxTotal;

    /**
     * 实际支付金额。货款+运费+税款-优惠金额，与支付保持一致
     */
    private BigDecimal acturalPaid;

    /**
     * 币制
     */
    private String currency;

    /**
     * 订购人注册号
     */
    private String buyerRegNo;

    /**
     * 订购人姓名
     */
    private String buyerName;

    /**
     * 订购人证件类型(1=身份证，2=其他)
     */
    private String buyerIdType;

    /**
     * 订购人证件号码
     */
    private String buyerId;

    /**
     * 支付企业代码
     */
    private String payCode;

    /**
     * 支付企业名称
     */
    private String payName;

    /**
     * 支付交易编号
     */
    private String payTransactionId;

    /**
     * 商品批次号
     */
    private String batchNumbers;

    /**
     * 收货人姓名
     */
    private String consignee;

    /**
     * 收货人电话
     */
    private String consigneePhone;

    /**
     * 收货人地址
     */
    private String consigneeAddr;

    /**
     * 收货人行政区划代码
     */
    private String consigneeDistrict;

    /**
     * 订单备注
     */
    private String note;

    /**
     * 版本号（默认1.0）
     */
    private String version;

    /**
     * 系统唯一序号（36位  英文字母大写）
     */
    private String guid;

    /**
     * 业务时间,格式:YYYYMMDDhhmmss
     */
    @SqlType(type = "date", format = "YYYY-MM-DD HH24:MI:SS")
    private String appDate;

    /**
     * 原始报文发送者ID
     */
    private String appSenderId;

    /**
     * 最后修改时间
     */
    @SqlType(type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String lastModifyDate;

    /**
     * 创建时间，引用清单的申报日期
     */
    @SqlType(type = "date", format = "yyyy-MM-dd", qryStart = "createDateStart", qryEnd = "createDateEnd")
    private String createDate;

    @SqlType(inTable = false)
    private String createDateStart;

    @SqlType(inTable = false)
    private String createDateEnd;

    /**
     * 操作结果（E1本地暂存/2电子口岸申报中/3发送海关成功/4发送海关失败/100海关退单/399海关审结）,若小于0数字表示处理异常回执
     */
    private String sendStatus;

    /**
     * 操作员编码
     */
    private String operId;

    /**
     * 组织机构编码
     */
    private String orgId;

    /**
     * 状态
     */
    private String status;

    /**
     * 状态时间
     */
    @SqlType(type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String statusTime;

    /**
     * @return 唯一主键
     */
    public String getId() {
        return id;
    }

    /**
     * @param id 唯一主键
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return 订单类型（I=进口，E=出口）。电商平台的订单类型 I-进口商品订单；E-出口商品订单
     */
    public String getOrderType() {
        return orderType;
    }

    /**
     * @param orderType 订单类型（I=进口，E=出口）。电商平台的订单类型 I-进口商品订单；E-出口商品订单
     */
    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }

    /**
     * @return 订单编号。原始交易平台的原始订单编号
     */
    public String getOrderNo() {
        return orderNo;
    }

    /**
     * @param orderNo 订单编号。原始交易平台的原始订单编号
     */
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    /**
     * @return 电商平台代码。电商平台的海关备案编码（18位）
     */
    public String getEbpCode() {
        return ebpCode;
    }

    /**
     * @param ebpCode 电商平台代码。电商平台的海关备案编码（18位）
     */
    public void setEbpCode(String ebpCode) {
        this.ebpCode = ebpCode;
    }

    /**
     * @return 电商平台名称。电商平台的海关备案名称（电子口岸校验名称）
     */
    public String getEbpName() {
        return ebpName;
    }

    /**
     * @param ebpName 电商平台名称。电商平台的海关备案名称（电子口岸校验名称）
     */
    public void setEbpName(String ebpName) {
        this.ebpName = ebpName;
    }

    /**
     * @return 电商企业代码。电商企业的海关备案编码(18位)
     */
    public String getEbcCode() {
        return ebcCode;
    }

    /**
     * @param ebcCode 电商企业代码。电商企业的海关备案编码(18位)
     */
    public void setEbcCode(String ebcCode) {
        this.ebcCode = ebcCode;
    }

    /**
     * @return 电商企业名称。电商企业的海关备案名称
     */
    public String getEbcName() {
        return ebcName;
    }

    /**
     * @param ebcName 电商企业名称。电商企业的海关备案名称
     */
    public void setEbcName(String ebcName) {
        this.ebcName = ebcName;
    }

    /**
     * @return 货款金额
     */
    public BigDecimal getGoodsValue() {
        return goodsValue;
    }

    /**
     * @param goodsValue 货款金额
     */
    public void setGoodsValue(BigDecimal goodsValue) {
        this.goodsValue = goodsValue;
    }

    /**
     * @return 运杂费(无则为0)
     */
    public BigDecimal getFreight() {
        return freight;
    }

    /**
     * @param freight 运杂费(无则为0)
     */
    public void setFreight(BigDecimal freight) {
        this.freight = freight;
    }

    /**
     * @return 优惠减免金额(无则为0)
     */
    public BigDecimal getDiscount() {
        return discount;
    }

    /**
     * @param discount 优惠减免金额(无则为0)
     */
    public void setDiscount(BigDecimal discount) {
        this.discount = discount;
    }

    /**
     * @return 订单商品税款
     */
    public BigDecimal getTaxTotal() {
        return taxTotal;
    }

    /**
     * @param taxTotal 订单商品税款
     */
    public void setTaxTotal(BigDecimal taxTotal) {
        this.taxTotal = taxTotal;
    }

    /**
     * @return 实际支付金额。货款+运费+税款-优惠金额，与支付保持一致
     */
    public BigDecimal getActuralPaid() {
        return acturalPaid;
    }

    /**
     * @param actualPaid 实际支付金额。货款+运费+税款-优惠金额，与支付保持一致
     */
    public void setActuralPaid(BigDecimal actualPaid) {
        this.acturalPaid = actualPaid;
    }

    /**
     * @return 币制
     */
    public String getCurrency() {
        return currency;
    }

    /**
     * @return 币制
     */
    public String getCurrencyDisplay() {
        return DictTag.getCargoParamVal("S_CURRENCY_E", currency, "CODE_C", "NAME_C");
    }

    /**
     * @param currency 币制
     */
    public void setCurrency(String currency) {
        this.currency = currency;
    }

    /**
     * @return 订购人注册号
     */
    public String getBuyerRegNo() {
        return buyerRegNo;
    }

    /**
     * @param buyerRegNo 订购人注册号
     */
    public void setBuyerRegNo(String buyerRegNo) {
        this.buyerRegNo = buyerRegNo;
    }

    /**
     * @return 订购人姓名
     */
    public String getBuyerName() {
        return buyerName;
    }

    /**
     * @param buyerName 订购人姓名
     */
    public void setBuyerName(String buyerName) {
        this.buyerName = buyerName;
    }

    /**
     * @return 订购人证件类型(1=身份证，2=其他)
     */
    public String getBuyerIdType() {
        return buyerIdType;
    }

    /**
     * @return 订购人证件类型(1=身份证，2=其他)
     */
    public String getBuyerIdTypeDisplay() {
        return "1".equals(buyerIdType) ? "身份证" : "其他";
    }

    /**
     * @param buyerIdType 订购人证件类型(1=身份证，2=其他)
     */
    public void setBuyerIdType(String buyerIdType) {
        this.buyerIdType = buyerIdType;
    }

    /**
     * @return 订购人证件号码
     */
    public String getBuyerId() {
        return buyerId;
    }

    /**
     * @param buyerId 订购人证件号码
     */
    public void setBuyerId(String buyerId) {
        this.buyerId = buyerId;
    }

    /**
     * @return 支付企业代码
     */
    public String getPayCode() {
        return payCode;
    }

    /**
     * @param payCode 支付企业代码
     */
    public void setPayCode(String payCode) {
        this.payCode = payCode;
    }

    /**
     * @return 支付企业名称
     */
    public String getPayName() {
        return payName;
    }

    /**
     * @param payName 支付企业名称
     */
    public void setPayName(String payName) {
        this.payName = payName;
    }

    /**
     * @return 支付交易编号
     */
    public String getPayTransactionId() {
        return payTransactionId;
    }

    /**
     * @param payTransactionId 支付交易编号
     */
    public void setPayTransactionId(String payTransactionId) {
        this.payTransactionId = payTransactionId;
    }

    /**
     * @return 商品批次号
     */
    public String getBatchNumbers() {
        return batchNumbers;
    }

    /**
     * @param batchNumbers 商品批次号
     */
    public void setBatchNumbers(String batchNumbers) {
        this.batchNumbers = batchNumbers;
    }

    /**
     * @return 收货人姓名
     */
    public String getConsignee() {
        return consignee;
    }

    /**
     * @param consignee 收货人姓名
     */
    public void setConsignee(String consignee) {
        this.consignee = consignee;
    }

    /**
     * @return 收货人电话
     */
    public String getConsigneePhone() {
        return consigneePhone;
    }

    /**
     * @param consigneePhone 收货人电话
     */
    public void setConsigneePhone(String consigneePhone) {
        this.consigneePhone = consigneePhone;
    }

    /**
     * @return 收货人地址
     */
    public String getConsigneeAddr() {
        return consigneeAddr;
    }

    /**
     * @param consigneeAddr 收货人地址
     */
    public void setConsigneeAddr(String consigneeAddr) {
        this.consigneeAddr = consigneeAddr;
    }

    /**
     * @return 收货人行政区划代码
     */
    public String getConsigneeDistrict() {
        return consigneeDistrict;
    }

    /**
     * @param consigneeDistrict 收货人行政区划代码
     */
    public void setConsigneeDistrict(String consigneeDistrict) {
        this.consigneeDistrict = consigneeDistrict;
    }

    /**
     * @return 订单备注
     */
    public String getNote() {
        return note;
    }

    /**
     * @param note 订单备注
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return 版本号（默认1.0）
     */
    public String getVersion() {
        return version;
    }

    /**
     * @param version 版本号（默认1.0）
     */
    public void setVersion(String version) {
        this.version = version;
    }

    /**
     * @return 系统唯一序号（36位  英文字母大写）
     */
    public String getGuid() {
        return guid;
    }

    /**
     * @param guid 系统唯一序号（36位  英文字母大写）
     */
    public void setGuid(String guid) {
        this.guid = guid;
    }

    /**
     * @return 业务时间, 格式:YYYYMMDDhhmmss
     */
    public String getAppDate() {
        return appDate;
    }

    /**
     * @param appDate 业务时间,格式:YYYYMMDDhhmmss
     */
    public void setAppDate(String appDate) {
        this.appDate = appDate;
    }

    /**
     * @return 原始报文发送者ID
     */
    public String getAppSenderId() {
        return appSenderId;
    }

    /**
     * @param appSenderId 原始报文发送者ID
     */
    public void setAppSenderId(String appSenderId) {
        this.appSenderId = appSenderId;
    }

    /**
     * @return 最后修改时间
     */
    public String getLastModifyDate() {
        return lastModifyDate;
    }

    /**
     * @param lastModifyDate 最后修改时间
     */
    public void setLastModifyDate(String lastModifyDate) {
        this.lastModifyDate = lastModifyDate;
    }

    /**
     * @return 创建时间，引用清单的申报日期
     */
    public String getCreateDate() {
        return createDate;
    }

    /**
     * @param createDate 创建时间，引用清单的申报日期
     */
    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    public String getCreateDateStart() {
        return createDateStart;
    }

    public void setCreateDateStart(String createDateStart) {
        this.createDateStart = createDateStart;
    }

    public String getCreateDateEnd() {
        return createDateEnd;
    }

    public void setCreateDateEnd(String createDateEnd) {
        this.createDateEnd = createDateEnd;
    }

    public String getSendStatus() {
        return sendStatus;
    }

    public void setSendStatus(String sendStatus) {
        this.sendStatus = sendStatus;
    }

    public String getOperId() {
        return operId;
    }

    public void setOperId(String operId) {
        this.operId = operId;
    }

    public String getOrgId() {
        return orgId;
    }

    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatusTime() {
        return statusTime;
    }

    public void setStatusTime(String statusTime) {
        this.statusTime = statusTime;
    }
}
